Перем юТест;
 
Функция ПолучитьСписокТестов(ЮнитТестирование) Экспорт
 	
 	юТест = ЮнитТестирование;
 	
 	ВсеТесты = Новый Массив;
 	
	ВсеТесты.Добавить("ТестДолжен_ПроверитьПолучениеЧасовогоПояса");
	ВсеТесты.Добавить("ТестДолжен_ПроверитьПолучениеДопустимыхЧасовыхПоясов"); 
	ВсеТесты.Добавить("ТестДолжен_ПроверитьПолучениеПредставленияЧасовогоПояса");
	ВсеТесты.Добавить("ТестДолжен_ПроверитьПолучениеЧасовогоПоясаПоСтроке");
	ВсеТесты.Добавить("ТестДолжен_ПроверитьКорректностьПолученияЧасовогоПоясаПоСтроке");
	ВсеТесты.Добавить("ТестДолжен_ПроверитьПреобразованиеВремениБезПараметров");
	ВсеТесты.Добавить("ТестДолжен_ПроверитьПреобразованиеВремениСПараметрами");
	ВсеТесты.Добавить("ТестДолжен_ПроверитьСмещениеUTC"); 
 	
 	Возврат ВсеТесты;
 	
КонецФункции

Процедура ПередЗапускомТеста() Экспорт
КонецПроцедуры
 
Процедура ПослеЗапускаТеста() Экспорт
КонецПроцедуры

Процедура ТестДолжен_ПроверитьПолучениеЧасовогоПояса() Экспорт
	
	ЧасовойПояс = ЧасовойПояс();

	юТест.Проверить(ЗначениеЗаполнено(ЧасовойПояс), "Часовой пояс должен быть заполнен");

КонецПроцедуры

Процедура ТестДолжен_ПроверитьПолучениеДопустимыхЧасовыхПоясов() Экспорт

	ЧасовыеПояса = ПолучитьДопустимыеЧасовыеПояса();

	юТест.Проверить(ЧасовыеПояса.Количество() > 0, "Должны присутствовать доступные часовые пояса");

КонецПроцедуры

Процедура ТестДолжен_ПроверитьПолучениеПредставленияЧасовогоПояса() Экспорт

	ЧасовойПояс = ЧасовойПояс();
	Представление = ПредставлениеЧасовогоПояса(ЧасовойПояс);

	юТест.Проверить(ЗначениеЗаполнено(Представление), "Представление часовой пояса должено быть заполнено");

КонецПроцедуры

Процедура ТестДолжен_ПроверитьПолучениеЧасовогоПоясаПоСтроке() Экспорт
	
	ЧасовойПояс1 = ПредставлениеЧасовогоПояса("GMT+4");
	ЧасовойПояс2 = ПредставлениеЧасовогоПояса("GMT+04:00");
	
	юТест.Проверить(ЧасовойПояс1 = ЧасовойПояс2, "Часовые пояса должны быть равны");

	ЧасовойПояс3 = ПредставлениеЧасовогоПояса("GMT+03:00");

	юТест.Проверить(ЧасовойПояс1 <> ЧасовойПояс3, "Часовые пояса должны быть не равны");

КонецПроцедуры

Процедура ТестДолжен_ПроверитьКорректностьПолученияЧасовогоПоясаПоСтроке() Экспорт
	
	Попытка
		ЧасовойПояс = ПредставлениеЧасовогоПояса("GMT+444");
	Исключение 
		ЧасовойПояс = Неопределено;
	КонецПопытки;

	юТест.Проверить(ЧасовойПояс = Неопределено, 
		"Часовой пояс с некорректным смещением в часах должен быть неопределенным");

	Попытка
		ЧасовойПояс = ПредставлениеЧасовогоПояса("GMT+4:33333");
	Исключение 
		ЧасовойПояс = Неопределено;
	КонецПопытки;

	юТест.Проверить(ЧасовойПояс = Неопределено, 
		"Часовой пояс с некорректным смещением в минутах должен быть неопределенным");

КонецПроцедуры

Процедура ТестДолжен_ПроверитьПреобразованиеВремениБезПараметров() Экспорт

	ТекущаяДата = ТекущаяДата();
	utc = УниверсальноеВремя(ТекущаяДата);
	ТекущаяДата2 = МестноеВремя(utc);

	юТест.Проверить(ТекущаяДата = ТекущаяДата2, "Текущая дата и преобразованная дата должны быть равны");

КонецПроцедуры

Процедура ТестДолжен_ПроверитьПреобразованиеВремениСПараметрами() Экспорт

	ЧасовойПояс = "GMT+4";
	ТекущаяДата = ТекущаяДата();
	utc = УниверсальноеВремя(ТекущаяДата, ЧасовойПояс);
	ТекущаяДата2 = МестноеВремя(utc, ЧасовойПояс);

	юТест.Проверить(ТекущаяДата = ТекущаяДата2, "Текущая дата и преобразованная дата должны быть равны");

КонецПроцедуры

Процедура ТестДолжен_ПроверитьСмещениеUTC() Экспорт

	ТекущаяДата = ТекущаяДата();
	utc = УниверсальноеВремя(ТекущаяДата);
	Смещение1 = ТекущаяДата - utc;
	Смещение2 = СмещениеСтандартногоВремени();

	юТест.Проверить(Смещение1 = Смещение2, "Смещения часового пояса должны быть равны");

КонецПроцедуры